#include <bits/stdc++.h>

constexpr int INF = 0x7fffffff; // 无穷大
typedef long long ll;

using namespace std;

class Solution {
public:
    int minimumDifference(vector<int>& nums, int k) {
        unordered_set<int> st1, st2;
        int ret = 0x3f3f3f3f;
        for (int v : nums) {
            st2.clear();
            st2.insert(v);
            for (int x : st1) {
                st2.insert(x & v); // 对每一个元素v，计算它和st1中元素的按位与结果，并存入st2中
            }
            swap(st1, st2); // 把新的结果存入st1中，为下一轮的计算做准备
            for (int x : st1) {
                ret = min(ret, abs(k - x)); // 计算k和st1中元素的差值，并更新最小差值
            }
        }
        return ret; // 返回最小差值
    }
};

int main(int argc, const char** argv) {
    Solution s;
    vector<int> data = {1};
    std::cout << s.minimumDifference(data, 10) << std::endl;
    return 0;
}
